package com.gomore.opple.utils;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtil {

    public static final String DATE_FORMATTER_1 = "yyyy-MM-dd HH:mm:ss";
    public static final String DATE_FORMATTER_2 = "yyyy-MM-dd";
    public static final String DATE_FORMATTER_3 = "yyyyMMdd";

    public static Calendar stringCalendar(String time) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMATTER_1);
            Date date = sdf.parse(time);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar;
        } catch (ParseException e) {
        }
        return null;

    }

    /**
     * 返回当前时间的字符串格式
     */
    public static String getTodayTime() {
        Date date = new Date();
        DateFormat df = new SimpleDateFormat(DATE_FORMATTER_1);
        String todyStr = df.format(date);
        return todyStr;
    }

    /**
     * 返回当前日期的字符串格式
     */
    public static String getTodayDate() {
        Date date = new Date();
        DateFormat df = new SimpleDateFormat(DATE_FORMATTER_2);
        String todyStr = df.format(date);
        return todyStr;
    }


    public static String formatDate(Date date, String formatStr) {
        DateFormat df = new SimpleDateFormat(formatStr);
        String todyStr = df.format(date);
        return todyStr;
    }


    public static Date calendarToDate(Calendar mCalendar) {
        Date date = mCalendar.getTime();
        return date;
    }

    public static String fomatforDate(Date date, String fomat) {
        if (date == null) {
            return "";
        }
        SimpleDateFormat df = new SimpleDateFormat(fomat);
        String time = df.format(date);
        return time;
    }



    // date类型转换为String类型
    // formatType格式为yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日 HH时mm分ss秒
    // data Date类型的时间
    public static String dateToString(Date data, String formatType) {
        return new SimpleDateFormat(formatType).format(data);
    }

    // long类型转换为String类型
    // currentTime要转换的long类型的时间
    // formatType要转换的string类型的时间格式
    public static String longToString(long currentTime, String formatType)
            throws ParseException {
        Date date = longToDate(currentTime, formatType); // long类型转成Date类型
        String strTime = dateToString(date, formatType); // date类型转成String
        return strTime;
    }

    // string类型转换为date类型
    // strTime要转换的string类型的时间，formatType要转换的格式yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日
    // HH时mm分ss秒，
    // strTime的时间格式必须要与formatType的时间格式相同
    public static Date stringToDate(String strTime, String formatType)
            throws ParseException {
        SimpleDateFormat formatter = new SimpleDateFormat(formatType);
        Date date = null;
        date = formatter.parse(strTime);
        return date;
    }

    // long转换为Date类型
    // currentTime要转换的long类型的时间
    // formatType要转换的时间格式yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日 HH时mm分ss秒
    public static Date longToDate(long currentTime, String formatType)
            throws ParseException {
        Date dateOld = new Date(currentTime); // 根据long类型的毫秒数生命一个date类型的时间
        String sDateTime = dateToString(dateOld, formatType); // 把date类型的时间转换为string
        Date date = stringToDate(sDateTime, formatType); // 把String类型转换为Date类型
        return date;
    }

    // string类型转换为long类型
    // strTime要转换的String类型的时间
    // formatType时间格式
    // strTime的时间格式和formatType的时间格式必须相同
    public static long stringToLong(String strTime, String formatType)
            throws ParseException {
        Date date = stringToDate(strTime, formatType); // String类型转成date类型
        if (date == null) {
            return 0;
        } else {
            long currentTime = dateToLong(date); // date类型转成long类型
            return currentTime;
        }
    }

    // date类型转换为long类型
    // date要转换的date类型的时间
    public static long dateToLong(Date date) {
        return date.getTime();
    }


}
